任何新式開發平台的基本工具都是一種機制,而開發人員可以透過此機制建立、共用和使用實用的程式碼。
這類程式碼通常會打包成「套件」,其中包含已編譯程式碼 (如 DLL),以及在取用這些套件之專案中所需的其他內容。
NuGet 套件就是副檔名為 .nupkg 的單一 ZIP 檔案,內含已編譯程式碼 (DLL)、其他與該程式碼相關的檔案,以及包含套件版本號碼這類資訊的描述性資訊清單。
簡單說就是一個共享程式碼的平台,可以把你自己的程式碼編譯成 DLL,或者加入各種相關檔案,然後包成 .nupkg 放到一個私人或公共平台與他人共享。
第一天下載的 .NET Core SDK
裡面就有附加 nuget 的工具,所以我們可以直接使用。
首先先到 NuGet Gallery | Home 裡面隨便找一個套件,這邊就找個個人比較常用的 Newtonsoft.Json,點進去就會看到
因為個人不太愛用 beta 版,所以看下面排除 beta 的最新版是 11.0.2,所以在 TERMIANL 輸入 dotnet add package Newtonsoft.Json --version 11.0.2
。
本來的 xxx.csproj 就會被修改,xxx 為你專案名稱,原先是
多加了套件名稱與版本
如果想要移除套件來看差別的話,移除套件為 dotnet remove package Newtonsoft.Json
。
再來就是來用這個套件了。
這是一個 Json 的序列化與反序列化的工具,在 API 介接上很常用到,相關內容就不贅述了。
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace demo {
class Program {
static void Main (string[] args) {
var members = new List<Member> () {
new Member () { ID = 0, Name = "Mio" },
new Member () { ID = 1, Name = "Miffy" },
new Member () { ID = 2, Name = "Lulu" },
new Member () { ID = 3, Name = "NekoSan" },
new Member () { ID = 4, Name = "MooDoooooooooooooooooo" }
};
// 序列化
var json = JsonConvert.SerializeObject (members);
Console.WriteLine ($"json = {json}");
//反序列化
var members2 = JsonConvert.DeserializeObject<List<Member>> (json);
foreach (var member in members2) {
Console.WriteLine ($"ID = {member.ID}, Name = {member.Name}");
}
}
class Member {
public int ID { get; set; }
public string Name { get; set; }
}
}
}
或者在開發桌面程式時,好用的 LOG 套件 NLog,在使用時也要一併下載 NLog.Config 與 NLog.InstallNLogConfig,有興趣的人可以看一下文末連結,有前輩寫的文章,這邊就不再多介紹了。
今天小小的介紹了 NuGet,雖然沒有講到什麼東西啦。使用 NuGet 的話,如果多人開發的話,也不怕共同開發者沒有正確載入套件,因為 .csproj 紀錄的東西在給予其他人時,只要輸入 dotnet build
和 dotnet run
就會自動載入了。
除了上面這兩個套件外,有事沒事也可以逛逛 nuget 去找寶物,雖然大多都是前輩們分享在自己的部落格後,才會去發現啦 XD
感謝閱讀。
參考資料
什麼是 NuGet?它有哪些功能? | Microsoft Docs
NuGet Gallery | Home
NuGet Gallery | Newtonsoft.Json 12.0.1-beta1
NuGet Gallery | NLog 4.5.11
NuGet Gallery | NLog.Config 4.5.11
NuGet Gallery | NLog.InstallNLogConfig 2.0.0
mrkt 的程式學習筆記: 使用NLog - Advanced .NET Logging (1)